查看原文
其他

搞定!在某手上搜索视频,并实现下载

李运辰 Python研究者 2022-09-11


大家好,我是辰哥~


相信大家都接触了短视频平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技术是:在某手上搜索视频,并实现下载

01


获取搜索链接


编写过接口或者开发过网站的小伙伴都知道,对一个服务器上的资源进行请求时,是通过访问链接(接口),服务器进行响应返回数据。

1.搜索请求链接


因此,我们第一步先获取到搜索的请求链接,这里辰哥通过抓取数据包的方式进行获取。


这里通过mitmproxy抓取某手小程序,如果不清楚这个技术操作的小伙伴,可以参考我之前的一篇文章(以【某程旅行】为例,讲述小程序爬虫技术),该文章从0到1讲解了如何使用mitmproxy采集小程序。




比如搜索:民谣,在抓包页面查看数据包,找到下面这个数据包



点击数据包




可以看到搜索链接的请求是post方式,以及请求头headers请求参数,请求参数中keyword是搜索的关键词,通过修改keyword就可以获取到不同的内容。


2.分析数据包


通过查看返回的数据,可以发现所有的视频内容都在字段feeds


提取字段:视频地址用户名封面图视频名称

mp4_url = i['mainMvUrls'][0]['url']userName = i['userName']pic_url = i['coverUrls'][0]['url']caption = i['caption']

02


请求数据


清楚了数据包的请求方式和参数,以及返回的数据,接着我们开始通过Python去构造请求和处理响应数据。


请求头请求参数

headers = { 'content-type':'application/json',    'cookie':'自己的cookie'}s = json.dumps({ "keyword": "民谣", "pcursor": "",    "ussid": ""})


请求地址:

url = 'https://wxmini-api.uyouqu.com/rest/wd/search/feed'r = requests.post(url, data=s,headers=headers).json()


打印输出结果:


03


保存数据


我们将视频和对应的封面图下载保存到本地,这里新建两个函数,一个是下载视频,一个是下载封面图。


下载视频

#下载视频def download_mp4(mp4_name,mp4_url): dir = str(time.strftime('%y%m%d', time.localtime())) dir_path = "/"+dir # 判断文件夹是否存在 if not os.path.exists(dir_path): os.mkdir(dir_path) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36' } r = requests.get(mp4_url, headers=headers, stream=True) if r.status_code == 200: # 截取图片文件名 with open(dir_path+"/"+mp4_name+".mp4", 'wb') as f: f.write(r.content)


下载封面图

#下载图片def download_img(img_name,img_url): dir = str(time.strftime('%y%m%d', time.localtime())) dir_path = "/"+dir # 判断文件夹是否存在 if not os.path.exists(dir_path): os.mkdir(dir_path) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36' } r = requests.get(img_url, headers=headers, stream=True) if r.status_code == 200: # 截取图片文件名 with open(dir_path+"/"+img_name+".jpg", 'wb') as f: f.write(r.content)


视频和封面图都保存到当天日期命名的文件夹中,如果没有该文件夹则自动创建。


调用这两个函数

#开始下载图片download_img(caption,pic_url)#开始下载视频download_mp4(caption,mp4_url)


执行结束后,保存结果:



可以看到封面图和视频都保存成功!其名为是以视频名称对两者进行命名。

04


小结


本文讲解了某手搜索视频下载的技术,对于新手学习来说还是一个不错的可以练习的小爬虫,想学习的小伙伴,一定要动手尝试一定要动手尝试一定要动手尝试!

本文的源码获取方式,回复:搜索视频下载


为了方便小白Python入门,辰哥已经开设了一个付费会员一对一指导、答疑等服务,目前已经有部分读者加入,效果不错,感兴趣的小伙伴可以联系辰哥进行咨询。

最后说一声:原创不易,求给个赞、在看、评论


往期精彩回顾




【保姆级】利用Github搭建自己的个人博客,看完就会


打造一个window桌面应用:在线聊天对话机器人


太神奇了!竟然可以一边访问小程序,一边保存访问的数据



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存